import java.util.ArrayList;

public class CircularShifter {
    //定义一个ArrayList变量ls
    public ArrayList<String> ls;
    //定义构造函数，参数传入ArrayList变量ls
    public CircularShifter(ArrayList<String> ls){
        //将构造函数传入的ls变量赋值给类中的ls变量
        this.ls=ls;
    }
    //定义shift方法，用于执行循环移位操作
    public void shift(){
        //定义ArrayList变量shiftedLineIndexes，用于存储循环移位后的结果
        ArrayList<String> shiftedLineIndexes=new ArrayList<String>();
        //循环遍历ls中的元素
        for(int i=0;i<ls.size();i++){
            //获取当前处理的字符串
            String orinLine=ls.get(i);
            //将当前字符串按照空格分割成字符串数组
            String sarray[]=orinLine.split(" ");
            //循环遍历sarray数组中的元素
            for(int j=0;j<sarray.length;j++){
                //定义字符串变量newLine，用于存储拼接完的新字符串
                String newLine=sarray[j];
                //如果当前数组长度大于1
                if(sarray.length>1){
                    //如果当前处理的字符串是该数组中的最后一个元素
                    if(j==sarray.length-1){
                        //循环遍历数组中除最后一个元素外的所有元素
                        for(int k=0;k<(sarray.length-1);k++){
                            //将每个元素拼接到newLine后面
                            newLine=newLine+" "+sarray[k];
                        }
                    }
                    else{
                        //循环遍历数组中比当前元素位置大的所有元素
                        for(int k=j+1;k<sarray.length;k++){
                            //将每个元素拼接到newLine后面
                            newLine=newLine+" "+sarray[k];
                        }
                        //循环遍历数组中比当前元素位置小的所有元素
                        for(int m=0;m<j;m++){
                            //将每个元素拼接到newLine后面
                            newLine=newLine+" "+sarray[m];
                        }
                    }
                }
                //将拼接完的新字符串添加到shiftedLineIndexes中
                shiftedLineIndexes.add(newLine);
            }
        }
        //将shiftedLineIndexes作为新的ls
        ls=shiftedLineIndexes;
    }
}


